Debian系统内使用mmap报Operation not permitted错误

在Debian系统内碰到使用mmap函数但是一直报Operation not permitted错误的问题,参考这里,可知在CONFIG_STRICT_DEVMEM默认开启的情况下,用户空间(user space)不可连接超过限制的物理内存,超过了限制就会报这个错误

解决办法有2个,第一个是修改CONFIG_STRICT_DEVMEM的值重新编译内核,比较麻烦,另一个是直接修改指定配置文件,重启就能生效,我采用的是后一种,文件为/boot/grub/grub.cfg,在linux /boot/vmlinuz行处增加iomem=relaxed项,修改后保存,重启生效
mmap-iomem.jpg

有一个更好的可通过程序修改此项的办法:打开/etc/default/grub,编辑GRUB_CMDLINE_LINUX为iomem=relaxed,执行update-grub就等同于修改/boot/grub/grub.cfg文件